Microprocessor organization, architecture and software model. Modern architectures and their evolution: Intel x86 architecture, ARM architecture, RISC-V architecture, etc. Memory hierarchy: Cache memory, main memory and external memory. Cache organization. Instruction set architecture. Complex instruction set computer (CISC) versus reduced instruction set computer (RISC). Machine language and program execution. Data representation. Microprocessor memory addressing modes. Assembly language fundamentals. Data Transfer Instructions. Arithmetic and logic instructions. String comparisons. Program control instructions. Jump instructions. Stacks and subroutines. Software interrupts. Development of simple assembly programs. Using the assembler/linker. Microprocessor arithmetic and logic unit (ALU): adders, subtractors, multipliers and dividers. Binary representation of floating-point numbers and their arithmetic. Control unit. Data path design. Processor cycles and pipelining. Introduction to branch prediction and speculative execution. Basics of processor performance evaluation. The microprocessor bus architecture. Introduction to memory and I/O interfacing. Introduction to DMA-controlled input/output, and modern system buses: PCI, USB, etc.